package cn.green.business.service;

import cn.green.business.dao.Dao;
import cn.green.business.entity.Entity;
import cn.green.utils.StringUtils;

import java.util.List;

/**
 * 接口类：service业务处理层
 * @param <E>
 * @param <D>
 */
public interface Service<E extends Entity> {
    /**
     * 根据实体提供的参数，查询列表
     * @param param     实体参数
     * @return List<E>  实体列表
     */
    List<E> getList(E param);
    /**
     * 根据主键id查询
     * @param id       主键
     * @return E       实体类对象
     */
    E findById(String id);
    /**
     * 插入数据表
     * @param e         实体对象
     * @return
     */
    int insert(E e);
    /**
     * 修改数据表
     * @param e         实体对象
     * @return
     */
    int update(E e);
    /**
     * 删除数据表
     * @param e         实体对象
     * @return
     */
    int delete(E e);

    /**
     * 提供一个逻辑删除默认实现
     * @param e         实体对象
     * @return
     */
    default int logicDelete(E e) {
        if (e != null) {
            String id = e.getId();
            if (!StringUtils.isEmpty(id)) {
                e.setDelFlag(E.del_flag_delete);
                return this.update(e);
            }
        }
        return 0;
    }
}
